#ifndef __EXCEPTION_HPP__
#define __EXCEPTION_HPP__
/*
enum{
	EXP_NONE, // Not a exceptioN
	EXP_SUGG, // A suggestive Exception	(only record a piece of log)
	EXP_COMM, // A common Exception		(reset itself)
	EXP_PIVO, // A pivotal Exception	(reset the related modules and itself)
	EXP_SERI, // A serious Exception	(system reset)
};
*/
#define	EXP_NONE 0 // Not a exceptioN
#define	EXP_SUGG 1 // A suggestive Exception	(only record a piece of log)
#define	EXP_COMM 2 // A common Exception		(reset itself)
#define	EXP_PIVO 3 // A pivotal Exception	(reset the related modules and itself)
#define	EXP_SERI 4 // A serious Exception	(system reset)

#include <string>

using namespace std;

class Exception {

public:
	Exception( string desp );
	Exception( int level , string desp );
	~Exception();

	virtual string & get_desp();
	virtual BOOL handle_excp();
private:
	int mod_type;
	int state;
	int excp_level;
	
	string description;
	
};

#endif
